package com.wjw.java.games.tankgame;

import javax.swing.*;
import java.awt.*;

/**
 * 我的画板：游戏的绘图区
 */
public class MyPanel extends JPanel {

    HeroTank myTank = null;

    public MyPanel(){
        System.out.println("初始化MyPanel画板...");
        myTank = new HeroTank(100,100);
    }

    /**
     * 开始画图
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        //填充矩形
        g.fillRect(0,0,1000,750);
        //画自己的坦克
        drawTank(myTank.getX(),myTank.getY(),g,0,0);
    }

    /**
     * 画坦克的方法
     * @param x             坦克的左上角x坐标
     * @param y             坦克的左上角y坐标
     * @param g             画笔
     * @param direction     坦克的朝向(上、下、左、右)
     * @param type          坦克的类型：0自己的,1别人的
     */
    public void drawTank(int x,int y,Graphics g,int direction,int type){
        //根据坦克的类型,设置颜色
        switch (type){
            case 0://自己的坦克
                g.setColor(Color.cyan);//设置颜色
                break;
            case 1://敌人的的坦克
                g.setColor(Color.yellow);//设置颜色
                break;
        }

        //根据坦克的方向,绘制坦克
        switch (direction){
            case 0://上
                /*fill3DRect:画3D矩形、fillOval画圆形、drawLine画线*/
                g.fill3DRect(x,y,10,60,false);//画坦克左边的轮子
                g.fill3DRect(x+30,y,10,60,false);//画坦克右边的轮子
                g.fill3DRect(x+10,y+10,20,40,false);//画坦克中间的位置
                g.fillOval(x+10,y+20,20,20);//画坦克中间的盖子
                g.drawLine(x+20,y+30,x+20,y);//画坦克的炮筒
                break;
            case 1://
            case 2:
            case 3:
                default:
                    System.out.println("未知方向。。。");
        }
    }
}
